import storage from 'good-storage'
import { Store } from 'vuex'


// 收藏记录
const FAVORITE_KEY='_FAVORITE_'  
const FAVORITE_MAX_LENGTH=100
// 搜索记录 max
const SEARCH_KEY = '_search_'
const SEARCH_MAX_LENGTH= 15
// 播放记录 max
const PLAY_KEY= '_play_history'
const PLAY_MAX_LENGTH= 200


// 初始化localstorage 数据
export const loadSearch=function() {
    return storage.get(SEARCH_KEY, [])
}


// 往数组里插入 新数据到最前,超过maxLen时 自动替换老数据
const insertQuery= function(arr,val,compare,maxLen) {
    let index= arr.findIndex(compare)
    if(index===0) {
        return
    }
    if(index> 0) {
        arr.splice(index,1)
    }
    arr.unshift(val)
    if(maxLen && arr.length > maxLen) {
        arr.pop()
    }
}
 function delQuery(arr,compare) {
     let index=arr.findIndex(compare)
     if(index > -1) {
         arr.splice(index,1)
     }
 }
// 保存一条搜索记录
export function saveSearch(query) {
    // 取数组
    let searches =storage.get(SEARCH_KEY, [])
    // 更新数组
    insertQuery(searches,query,(item)=>{
        return item===query
    },SEARCH_MAX_LENGTH)
    // 存数组
    storage.set(SEARCH_KEY,searches)

    return searches
}
// 删除一条搜索记录    
export function delSearch(query) {
    // 取数组
    let searches =storage.get(SEARCH_KEY, [])
    delQuery(searches,item=>{
        return item===query
    })
    // 存数组
    storage.set(SEARCH_KEY,searches)
    return searches
}

// 删除全部搜索历史
export function delAllsearch() {
   storage.remove(SEARCH_KEY)
   return []
}

// 保存播放历史
export function savePlay(song) {
    // 取
    let plays =storage.get(PLAY_KEY, [])
    // 插入数据
    insertQuery(plays,song,(item)=>{
        return item.id===song.id
    } ,PLAY_MAX_LENGTH)
    // 跟新
    storage.set(PLAY_KEY,plays)

    return plays
}

// 初始化 播放历史
export function initPlayHistory() {  
    return storage.get(PLAY_KEY, [])
}

// 添加收藏歌曲
export function addFavorite(song) {
    let list=storage.get(FAVORITE_KEY,[])
    insertQuery(list,song,(item)=> {
        return item.id===song.id
    },FAVORITE_MAX_LENGTH)
    storage.set(FAVORITE_KEY,list)

    return list
}
// 删除收藏歌曲
export function removeFavorite(song) {
    let list=storage.get(FAVORITE_KEY,[])
    delQuery(list,item=> {
        return item.id===song.id
    })
    storage.set(FAVORITE_KEY,list)

    return list
}

//初始化 收藏歌曲
export function initFavorite() {
    return storage.get(FAVORITE_KEY,[])
}




